package br.com.nemesis.controle;

import br.com.nemesis.dao.UsuarioDAO;
import br.com.nemesis.excecao.PersistenciaExcecao;
import br.com.nemesis.jsf.util.FacesUtil;
import br.com.nemesis.web.Sessao;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.event.ActionEvent;

@ManagedBean(name = "login")
@RequestScoped
public class Login {

    private String login;
    private String senha;
    
    @ManagedProperty(value = "#{sessao}")
    private Sessao sessao;

    public void setSessao(Sessao sessao) {
        this.sessao = sessao;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public String logon() {
        String navegacao = null;
        try {
            UsuarioDAO usuarioDAO = new UsuarioDAO();
            sessao.setUsuario(usuarioDAO.buscar(login, senha));
            if (sessao.getUsuario() != null) {
                navegacao = "/indice.nms";
            } else {
                FacesUtil.msgAviso("Senha inválida");
            }
        } catch (PersistenciaExcecao e) {
            FacesUtil.msgAlerta(e.getClass().getName() + ": " + e.getMessage());
        } catch (Exception e) {
            FacesUtil.msgAlerta(e.getClass().getName() + ": " + e.getMessage());
        }
        return navegacao;
    }

    public String logout() {
        sessao.setUsuario(null);
        return null;
    }

    public void logout(ActionEvent actionEvent) {
        sessao.setUsuario(null);
    }
    
}